xend: pci: fix extract_the_exact_pci_names()
authorKeir Fraser <keir.fraser@citrix.com>
Mon, 8 Jun 2009 11:24:14 +0000 (12:24 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Mon, 8 Jun 2009 11:24:14 +0000 (12:24 +0100)
Changeset 19726: d8b7b51f482b neglects the case pci_names could be
types.ListType.

Signed-off-by: Dexuan Cui <dexuan.cui@intel.com>
tools/python/xen/util/pci.py

index f4f9f7bfcfe548feed3a70b14d2a0e28d1c2b1aa..2cd5f731929009d562ef37643d9bc3299ebe36c6 100644 (file)
@@ -155,7 +155,14 @@ def parse_pci_name(pci_name_string):
 
 def extract_the_exact_pci_names(pci_names):
     result = []
-    pci_names = pci_names.split()
+
+    if isinstance(pci_names, types.StringTypes):
+        pci_names = pci_names.split()
+    elif isinstance(pci_names, types.ListType):
+        pci_names = re.findall(PCI_DEV_REG_EXPRESS_STR, '%s' % pci_names)
+    else:
+         raise PciDeviceParseError('Invalid argument: %s' % pci_names)
+
     for pci in pci_names:
         # The length of DDDD:bb:dd.f is 12.
         if len(pci) !=  12:
@@ -503,7 +510,7 @@ class PciDevice:
             return [self.name]
 
         dev_list = dev.find_all_devices_behind_the_bridge(ignore_bridge)
-        dev_list = extract_the_exact_pci_names('%s' % dev_list)
+        dev_list = extract_the_exact_pci_names(dev_list)
         return dev_list
 
     def do_secondary_bus_reset(self, target_bus, devs):